package io;

import java.io.File;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 苏西西
 * Date: 2023-10-15
 * Time: 11:17
 */
public class IOD11 {
    private static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        //首先让用户输入一个指定搜索的目录
       // Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要搜索的路径");
        String basePath = scanner.next();
        //针对用户的输入进行一个简单的判定
        File root = new File(basePath);
        //判断是不是目录
        if(!root.isDirectory()){
            //路径不存在或者只是一个普通文件。无法进行搜索
            System.out.println("当前输入的目录错误！");
            return;
        }
        //让用户再输入一个要删除的文件名
        System.out.println("请输入要删除的文件名");
        //此处使用的是next来读字符串而不是nextln!!
        //next是读到空白符就算是读完了。空白符包括换行，也可以是制表符，回车符
        //nextln仅仅是去找换行符
        //在控制台中，nextln是很难控制的
        String nameToDelete = scanner.next();

        //针对指定的路径进行扫描【递归操作】
        //从根目录出发（root）
        //先判断一下，当前的这个目录中是否包含要删除的文件，存在即删除，否则继续下一个
        //如果当前目录中包含了一些目录，则针对子目录进行递归

        scanDir(root,nameToDelete);
    }

    private static void scanDir(File root, String nameToDelete) {
        System.out.println("[scanDir]" +root.getAbsolutePath());
        //1.首先列出当前目录下包含的内容
        File[] files = root.listFiles();  //看一下当前的目录中有啥，好比文件资源管理器双击目录打开
        if(files == null){
            //当前root目录下没东西，是一个空目录
            //结束继续递归
            return;
        }
        //2.遍历当前的列出结果
        for(File f:files){
            if(f.isDirectory()){
                //如果是目录就进一步递归
                scanDir(f,nameToDelete);

            }else{
                //如果是普通文件判定是否要删除
                if(f.getName().contains(nameToDelete)){
                    System.out.println("确认删除？" +f.getAbsolutePath());
                    String choice = scanner.next();
                    if(choice.equals("y") || choice.equals("Y")){
                        f.delete();
                        System.out.println("删除成功");
                    }else{
                        System.out.println("取消删除操作");
                    }

                }
            }
        }

    }
}
